// mongoose插件
// mongoose插件用于连接操作mongodb数据库
// 安装：npm i mongoose
// 加载模块
const mongoose = require('mongoose')

// 连接数据库（如果没有数据库，会自动创建）
mongoose.connect('mongodb://localhost/haha')

// 监听连接 成功和失败 提示
mongoose.connection.on('error', console.error.bind(console, 'connection error:'))
mongoose.connection.once('open', ()=>{
    console.log( '--------数据库连接成功---------' )
})

// Mongoose 里，一切都始于Schema
// Schema的作用是：定义数据库中数据集合的字段名称和数据类型以及是否必填等信息
// 创建Schema对象
const usersSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    age: {
        type: String,
        required: true
    },
    sex: {
        type: String,
        default: '妖'
    },
    phone: {
        type: String,
        required: true
    }
})

// 把 schema对象编译成一个 Model 数据模型
// 将上面创建的schema对象和某个数据集合结合起来（如果没有数据集合，会自动创建）
// 使用 数据模型 来增删改查 数据库
const usersModel = mongoose.model('users',usersSchema)

// mongoose中增删改查数据的操作都是异步的，所有方法执行后都返回一个Promise对象

/* // 添加数据
usersModel.insertMany({name:'赵八',age:28,sex:'男',phone:'13877778888'})
// usersModel.insertMany({name:'李九',age:29,phone:'13877779999'})
// usersModel.insertMany({name:'牛二',phone:'13877772222'})// 报错，缺少必填项
.then((res)=>{
    console.log( 'promise成功',res )// [{...}]
})
.catch((err)=>{
    console.log( 'promise失败',err )
}) */


/* // 删除数据
usersModel.deleteOne({name:'赵八'})
.then((res)=>{
    console.log( 'promise成功',res )// { acknowledged: true, deletedCount: 1 }
})
.catch((err)=>{
    console.log( 'promise失败',err )
}) */


/* // 修改数据
usersModel.updateOne({name:'张三'},{$set:{sex:'女'}})
.then((res)=>{
    console.log( 'promise成功',res )
    // res = {
    //     acknowledged: true,
    //     modifiedCount: 1,
    //     upsertedId: null,
    //     upsertedCount: 0,
    //     matchedCount: 1
    // }
})
.catch((err)=>{
    console.log( 'promise失败',err )
}) */


// 查询数据
// usersModel.find({sex:'女'})
usersModel.find({sex:'人妖'})
.then((res)=>{
    console.log( 'promise成功',res )// [{},{},{}] 或 []
})
.catch((err)=>{
    console.log( 'promise失败',err )
})
